package com.zmn.plat.services.interfaces.orderconfig.distribute;

import java.util.List;

import com.zmn.plat.common.dto.orderconfig.distribute.RobOrderDIO;
import com.zmn.plat.model.entity.orderconfig.distribute.CheckCityAvailableQuery;
import com.zmn.plat.model.entity.orderconfig.distribute.UpdateStatusQuery;
import org.apache.ibatis.annotations.Param;

import com.zmn.plat.model.entity.orderconfig.distribute.DistributeWeightPlat;
import com.zmn.plat.model.entity.orderconfig.distribute.DistributeWeightStatusQuery;

/**
 * 类描述：派单参数平台配置业务处理接口
 *
 * @author mujunlin
 * @version v1.0
 * @since 2019/10/17 14:34
 */
public interface DistributeWeightPlatService {

    /**
     * 根据主键查找
     *
     * @param distributePlatId
     * @return
     */
    DistributeWeightPlat findByKey(Integer distributePlatId);

    /**
     * 获取派单配置列表
     *
     * @param plat          平台
     * @param bizType       业务类型
     * @param distributeWay 派单方式
     * @return
     */
    List<DistributeWeightPlat> findByPlatAndBizType(Integer plat, Integer bizType, Integer distributeWay);

    /**
     * 获取派单配置列表
     *
     * @param plat          平台
     * @param bizType       业务类型
     * @param distributeWay 派单方式
     * @return
     */
    List<DistributeWeightPlat> findByPlatAndBizTypeAndCity(Integer plat, Integer bizType, Integer cityId, Integer distributeWay);

    /**
     * 获取所有派单配置列表
     *
     * @return
     */
    List<DistributeWeightPlat> listAll();

    /**
     * 批量获取平台派单配置
     *
     * @param ids
     * @param bizType
     * @return
     */
    List<DistributeWeightPlat> listByPlatIdAndBizType(@Param("ids") List<Integer> ids, Integer bizType, Integer distributeWay);

    /**
     * 批量获取服务商派单配置
     *
     * @param ids
     * @param bizType
     * @return
     */
    List<DistributeWeightPlat> listCompanyByPlatIdAndType(@Param("ids") List<Integer> ids, Integer bizType, Integer distributeWay);


    /**
     * 查询已经被设置过的城市
     *
     * @param query
     * @return
     */
    List<Integer> hasBeenSetCity(CheckCityAvailableQuery query);

    /**
     * 更新
     *
     * @param distributeWeightPlat
     * @return
     */
    Integer updateByKey(DistributeWeightPlat distributeWeightPlat);

    /**
     * 更新状态
     *
     * @param query
     * @return
     */
    Integer updateStatusByQuery(DistributeWeightStatusQuery query);

    /**
     * 编辑启用/停用状态
     *
     * @param updateStatusQuery
     * @return
     */
    Integer updateStatus(UpdateStatusQuery updateStatusQuery);

    /**
     * 插入
     *
     * @param distributeWeightPlat
     * @return
     */
    Integer insert(DistributeWeightPlat distributeWeightPlat);

    /**
     * 删除
     *
     * @param distributePlatId
     * @return
     */
    Integer deleteByKey(Integer distributePlatId);

    /**
     * 获取派单配置列表
     *
     * @return
     */
    List<DistributeWeightPlat> findPlatDirectlyConfigByQuery(RobOrderDIO robOrderDIO);


}
